package leetcode_周赛._2021._202103._20210314;

/**
 * 找不同
 * 找到两处不同的地方
 * 思路：
 *   遍历两个字符串
 *   找出两处不同字符的 index
 *   使用 count 记录有没有两处地方不一样
 *   如果 count 为 0，则返回 true
 *   如果 count 为 2，则需要判断以下
 *   如果 count 为 其他，则返回 false
 */

public class _1790 {
    public static void main(String[] args) {
        System.out.println(new _1790().areAlmostEqual("abcd", "dcba"));
    }

    public boolean areAlmostEqual(String s1, String s2) {
        if (s1.length() != s2.length()) {
            return false;
        }
        int count = 0, i1 = -1, i2 = -1;
        for (int i = 0; i < s1.length(); i++) {
            if (s1.charAt(i) != s2.charAt(i)) {
                ++count;
                if (i1 == -1) i1 = i;
                if (i1 != i && i2 == -1) i2 = i;
            }
        }
        if (count == 0) return true;
        return count == 2 && s1.charAt(i1) == s2.charAt(i2) && s1.charAt(i2) == s2.charAt(i1);
    }
}
